﻿using System.Collections.Generic;

namespace Epic.HandyExtensions
{
    public static class DictionaryExtensions
    {
        /// <summary>
        /// 获取与指定的键相关联的值。
        /// </summary>
        /// <param name="source"></param>
        /// <param name="key">要获取其值的键。</param>
        /// <param name="value">当此方法返回时，如果找到指定键，则赋予与该键相关联的值；否则，将保持原值。该参数必须经过初始化。</param>
        /// <returns>如果对象包含具有指定键的元素，则为 true；否则，为 false。</returns>
        /// <exception cref="System.ArgumentNullException">key 为 null。</exception>
        public static bool TryGetValue<K, V>(this IDictionary<K, V> source, K key, ref V value)
        {
            V tmp;

            // succeed
            if (source.TryGetValue(key, out tmp))
            {
                value = tmp;
                return true;
            }

            // or not
            return false;
        }
    }
}
